package com.tbit.uqbike.service.business;

import com.tbit.uqbike.object.pojo.vo.BatteryLogCountVO;
import com.tbit.uqbike.object.pojo.vo.BatteryLogVO;
import com.tbit.uqbike.object.pojo.vo.BatteryOperationCountVO;
import com.tbit.common.entity.view.PageResult;

import java.util.Date;
import java.util.List;

/**
 * 电池操作记录接口
 *
 * @Author:BUGTian
 * @DATE: 2022/5/12
 */
public interface BatteryLogService {
    /**
     * 分页查询电池操作记录
     *
     * @param page          当前页码
     * @param size          每页显示的行
     * @param accountId     区域id
     * @param startTime     开始时间
     * @param endTime       结束时间
     * @param accountUserId 操作人员id
     * @param batteryNO     电池编号
     * @return
     */
    PageResult<BatteryLogVO> queryPage(Integer page, Integer size, Integer accountId, Date startTime,
                                       Date endTime, Integer accountUserId, String batteryNO);

    /**
     * 电池操作数量统计
     *
     * @param accountId
     * @param startTime
     * @param endTime
     * @param accountUserId
     * @return
     */
    List<BatteryOperationCountVO> queryBatteryOperationCount(Integer accountId, Date startTime, Date endTime, Integer accountUserId);

    /**
     * 电池出入库统计详情
     *
     * @param accountId
     * @param startTime
     * @param endTime
     * @param accountUserId
     * @param type
     * @return
     */
    PageResult<BatteryLogVO> queryDetails(Integer page, Integer size, Integer accountId, Date startTime, Date endTime, Integer accountUserId, Integer type);

    /**
     * 电池出入库总览
     *
     * @param page
     * @param size
     * @param accountId
     * @param startTime
     * @param endTime
     * @param accountUserId
     * @return
     */
    PageResult<BatteryLogCountVO> queryOverview(Integer page, Integer size, Integer accountId, Date startTime, Date endTime, Integer accountUserId);

    /**
     * 添加电池操作记录
     *
     * @param accountId
     * @param batteryId
     * @param batteryNO
     * @param type
     * @param accountUserId
     * @param addTime
     * @param remark
     */
    void insert(Integer accountId, Integer batteryId, String batteryNO, Integer type, Integer accountUserId, Date addTime, String remark);

}
